Imports Microsoft.VisualBasic

Namespace Logica.ModuloPrincipal
    Public Class ControladorLogica
#Region "Atributos"
        Private Shared instance As ControladorLogica

        Private CP As Persistencia.ModuloPrincipal.ControladorPersistencia
#End Region
        'Constructor Vacio
        Public Sub New()
            CP = Persistencia.ModuloPrincipal.ControladorPersistencia.getInstance
        End Sub

#Region "getInstance"
        'Patron Singleton 
        Public Shared Function getInstance() As ControladorLogica

            If instance Is Nothing Then
                instance = New ControladorLogica
            End If

            Return instance

        End Function
#End Region
#Region "Funciones"
        Public Function ValidarUsuario(ByVal Usuario As Usuario) As Boolean
            Dim result As Boolean = CP.ObtenerUsuario(Usuario)
            If result = False Then
                Return False
            Else
                Return True
            End If
        End Function

        Public Function visibilidadesForms(ByVal sector As String, ByVal usuario As String) As Boolean
            Dim nombreUsuario = usuario
            Dim query As String = "select fkgrupousuarios from usuariosistema where usuario ='" + nombreUsuario + "'"
            Dim idGrupo As String = Me.Ejecuta(query).Item("fkgrupousuarios").ToString
            Dim grupo As GrupoUsuario = DirectCast(Me.ObtenerGrupo(idGrupo).Item(0), GrupoUsuario)

            If (sector = "SistemaGlobal") Then
                If (grupo.AccesoSistemaGlobal = "Si") Then
                    Return True
                Else
                    Console.Write("Usted no cuenta con permisos para acceder a esta caracteristica")
                    Return False
                End If
            End If

            If (sector = "SistemaPersonal") Then
                If (grupo.AccesoSistemaPersonal = "Si") Then
                    Return True
                Else
                    Console.Write("Usted no cuenta con permisos para acceder a esta caracteristica")
                    Return False
                End If
            End If

            If (sector = "SolicitudBodega") Then
                If (grupo.AccesosSolicitudBodega = "Si") Then
                    Return True
                Else
                    Console.Write("Usted no cuenta con permisos para acceder a esta caracteristica")
                    Return False
                End If
            End If
        End Function

        Public Function ObtenerGrupo(ByVal criterio As String) As ArrayList

            Return CP.ObtenerGrupo(criterio)
        End Function

        Public Function ObtenerUsuarioUserID(ByVal userID As String) As ArrayList
            Return CP.ObtenerUsuario(userID)
        End Function

        Public Function obtenerEmpleadoFK(ByVal fk As String) As ArrayList

            Return CP.obtenerEmpleado(fk)
        End Function

        Public Function Ejecuta(ByVal query As String) As Hashtable
            Return CP.ObtenerDato(query)
        End Function
#End Region
    End Class

End Namespace
